﻿#pragma once

#include <vulkan/vulkan.hpp>

#include "Async/PackagedTask.h"
#include "Containers/ThreadSafePtr.h"
#include "Containers/Vector.h"
#include "Math/IntPoint.h"


class CRenderWidget;
class CSystemWindow;
struct SRenderWidgetBase;

class CRenderSurface
{

public:
    //CRenderSurface(vk::SurfaceKHR InVKSurface);

public:
    //渲染控件,由主线程写入
    //之后由渲染线程转换为SVulkanWidgetBase 
    //生命周期由主线程管理
    TVector<std::shared_ptr<SRenderWidgetBase>> Widgets[2];
    

    //系统窗口，生命周期由主线程和渲染线程共同管理
    TThreadSafeSharedPtr<CSystemWindow> SystemWindow;
protected:  

};